package presentation;


import java.awt.CardLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;


/**Classe permettant d'afficher la fenetre principale du cabinet medical
 * 
 */

public class DiminutifMainFrame extends JFrame {
		
	private static final long serialVersionUID = 1L;
	
	//Varible permettant de creer les differente fenetre
	private JPanel globalPanel =null;
	
	private PanelCreerClient panelCreerClient =null;
	private PanelListerClient panelListerClient =null;
	private PanelRechercherClient panelRechercheClient =null;
	private PanelSupprimerClient panelSupprimerClient =null;
	
	private PanelCreerProduit panelCreerProduit =null;
	private PanelListerProduit panelListerProduit =null;
	private PanelRechercherProduit panelRechercheProduit =null;
	private PanelModifierProduit panelModifierProduit =null;
	private PanelSupprimerProduit panelSupprimerProduit =null;
	
	private PanelCreerRDV panelCreerRDV =null;
	private PanelListerRDV panelListerRDV =null;
	
	
	JMenuBar jmbMenu=null;
	//premier niveau
	JMenu jmFichier=null; 
	JMenu jmProduit=null; 
	JMenu jmClient=null; 
	JMenu jmRDV=null; 
	JMenu jmAide=null; 
	//fin premier niveau
	
	//sous niveau
	JMenuItem jmiCreerProduit=null;
	JMenuItem jmiConsulterProduit=null;
	JMenuItem jmiModProduit=null;
	JMenuItem jmiSupprProduit=null;

	JMenuItem jmiCreerCli=null;
	JMenuItem jmiConsulterCli=null;
	JMenuItem jmiModCli=null;
	JMenuItem jmiSupprCli=null;
	
	JMenuItem jmiCreerRDV=null;
	JMenuItem jmiConsulterRDV=null;
	
	JMenuItem jmiQuitter=null;
	JMenuItem jmiInfos=null;
	
	/**Consructeur permettant de creer la fenetre
	 */
	public DiminutifMainFrame()
	{
		globalPanel=new JPanel(new CardLayout()); //permet de superposer des panels
		initialiserMenus();		
		this.add(globalPanel);
		globalPanel.add(new JPanel(),"vide");
	}
	
	/**Cette methode permet de creer le menu principal
	 */
	private void initialiserMenus()
	{
		jmbMenu=new JMenuBar();
		//premier niveau
		jmFichier=new JMenu("Fichier");
		jmProduit=new JMenu("Produits");
		jmClient=new JMenu("Clients");
		jmRDV=new JMenu("RDV");
		jmAide=new JMenu("Aide");
		//fin premier niveau
		
		//sous niveau
		jmiCreerProduit=new JMenuItem("Creer un produit");
		jmiConsulterProduit=new JMenuItem("Consulter les produits");
		jmiModProduit=new JMenuItem("Modifier un produit");
		jmiSupprProduit=new JMenuItem("Supprimer un produit");
		
		
		jmiCreerCli=new JMenuItem("Creer un client");
		jmiConsulterCli=new JMenuItem("Consulter les clients");
		jmiModCli=new JMenuItem("Modifier un client");
		jmiSupprCli=new JMenuItem("Supprimer un client");
		
		jmiCreerRDV=new JMenuItem("Creer un RDV");
		jmiConsulterRDV=new JMenuItem("Consulter un RDV");
		
		//retour au premier niveau
		jmiQuitter=new JMenuItem("Quitter");
		jmiInfos=new JMenuItem("A propos");
		
		//on join tous les second niveau au premier
		jmProduit.add(jmiCreerProduit);
		jmProduit.add(jmiConsulterProduit);
		jmProduit.add(jmiModProduit);
		jmProduit.add(jmiSupprProduit);
		
		jmClient.add(jmiCreerCli);
		jmClient.add(jmiConsulterCli);
		//jmClient.add(jmiModCli);
		jmClient.add(jmiSupprCli);
		
		jmRDV.add(jmiCreerRDV);
		jmRDV.add(jmiConsulterRDV);
	
		jmFichier.add(jmiQuitter);
		jmAide.add(jmiInfos);
		
	
		
		
		//on join les premiers niveau a la barre des menus
		jmbMenu.add(jmFichier);
		jmbMenu.add(jmProduit);
		jmbMenu.add(jmClient);
		jmbMenu.add(jmRDV);
		jmbMenu.add(jmAide);
		
		this.setJMenuBar(jmbMenu);
		
		//on ajoute les listener qui vont bien
		jmiInfos.addActionListener(new AideActionListener());
		
		jmiCreerCli.addActionListener(new CreerClientActionListener());
		jmiConsulterCli.addActionListener(new ListerClientActionListener());
		//jmiModCli.addActionListener(new ModifierClientActionListener());
		jmiSupprCli.addActionListener(new SupprimerClientActionListener());
		jmiQuitter.addActionListener(new QuitterActionListener());
		jmiCreerRDV.addActionListener(new CreerRDVActionListener());
		
		
		jmiCreerProduit.addActionListener(new CreerProduitActionListener());
		jmiConsulterProduit.addActionListener(new ListerProduitActionListener());
		jmiModProduit.addActionListener(new ModifierProduitActionListener());
		jmiSupprProduit.addActionListener(new SupprimerProduitActionListener());
		
		jmiCreerRDV.addActionListener(new CreerRDVActionListener());
		jmiConsulterRDV.addActionListener(new ListerRDVActionListener());
		
		
	}
	
	
	/**Cette classe interne implement <code>ActionListener</code>, elle sert a afficher l'aide
	 *
	 */
	class AideActionListener implements ActionListener
	{
	
	
		public void actionPerformed(ActionEvent e) {
			JOptionPane APropos=new JOptionPane();
			JOptionPane.showMessageDialog(APropos, "Salon de coiffure Diminutif - Copyright IUT du Limousin ....", "A propos ...", 1);
			// TODO Auto-generated method stub		
		}
	
	}
	
	/**Cette classe interne implement <code>ActionListener</code>, elle sert a quitter
	 * 
	 */
	class QuitterActionListener implements ActionListener
	{

		public void actionPerformed(ActionEvent e) {
			System.exit(0); 							//on quitte le programme
		}
		
	}
	
	/**Cette classe interne implement <code>ActionListener</code>, elle sert a afficher l'ecran creer Client
	 * 
	 */
	class CreerClientActionListener implements ActionListener
	{	
		
		public void actionPerformed(ActionEvent e) {
			panelCreerClient=new PanelCreerClient();					//on creer l'ecran creer client
			globalPanel.add(panelCreerClient,"pcp_cli");
			CardLayout cl = (CardLayout)(globalPanel.getLayout()); 		//on le stocke dans le panel 
		    cl.show(globalPanel, "pcp_cli");							//on affiche la bonne couche	
			repaint();
		}		
	}
	
	/**Cette classe interne implement <code>ActionListener</code>, elle sert a afficher l'ecran lister Client
	 * 
	 */
	class ListerClientActionListener implements ActionListener
	{	
		public void actionPerformed(ActionEvent e) {
			panelListerClient=new PanelListerClient();
			globalPanel.add(panelListerClient,"plp_cli"); //on l'ajoute
			CardLayout cl = (CardLayout)(globalPanel.getLayout());
		    cl.show(globalPanel, "plp_cli");			//on affiche le bon ecran
			repaint();
		}		
	}
	
	
	/**Cette classe interne implement <code>ActionListener</code>, elle sert a afficher l'ecran modifier Client
	 * 
	 */
	/*
	class ModifierClientActionListener implements ActionListener
	{	
		public void actionPerformed(ActionEvent e) {
			panelRechercheClient=new PanelRechercherClient();
			globalPanel.add(panelRechercheClient,"pmp_cli"); //on ajoute
			CardLayout cl = (CardLayout)(globalPanel.getLayout());
		    cl.show(globalPanel, "pmp_cli");			//on affiche
			repaint();
		}		
	}
	*/
	
		
	/**Cette classe interne implement <code>ActionListener</code>, elle sert a afficher l'ecran supprimer Client
	 * 
	 */
	
	class SupprimerClientActionListener implements ActionListener
	{

		public void actionPerformed(ActionEvent e) {
			panelSupprimerClient=new PanelSupprimerClient();
			globalPanel.add(panelSupprimerClient,"pmp_cli"); //on ajoute
			CardLayout cl = (CardLayout)(globalPanel.getLayout());
		    cl.show(globalPanel, "pmp_cli");			//on affiche
			repaint();		
			
		}
		
	}
	
	
	
	
	
	/**Cette classe interne implement <code>ActionListener</code>, elle sert a afficher l'ecran creer Produit
	 * 
	 */
	class CreerProduitActionListener implements ActionListener
	{	
		
		public void actionPerformed(ActionEvent e) {
			panelCreerProduit=new PanelCreerProduit();				
			globalPanel.add(panelCreerProduit,"pcp_prod");
			CardLayout cl = (CardLayout)(globalPanel.getLayout()); 		 
		    cl.show(globalPanel, "pcp_prod");								
			repaint();
		}		
	}
	
	
	class ListerProduitActionListener implements ActionListener
	{	
		public void actionPerformed(ActionEvent e) {
			panelListerProduit=new PanelListerProduit();
			globalPanel.add(panelListerProduit,"plp_prod"); 			//on l'ajoute
			CardLayout cl = (CardLayout)(globalPanel.getLayout());
		    cl.show(globalPanel, "plp_prod");						//on affiche le bon ecran
			repaint();
		}		
	}
	
	class ModifierProduitActionListener implements ActionListener
	{	
		public void actionPerformed(ActionEvent e) {
			panelModifierProduit=new PanelModifierProduit();
			globalPanel.add(panelModifierProduit,"pmp_prod"); 		//on ajoute
			CardLayout cl = (CardLayout)(globalPanel.getLayout());
		    cl.show(globalPanel, "pmp_prod");						//on affiche
			repaint();
		}		
	}

		
	
	class SupprimerProduitActionListener implements ActionListener
	{

		public void actionPerformed(ActionEvent e) {
			panelSupprimerProduit=new PanelSupprimerProduit();
			globalPanel.add(panelSupprimerProduit,"pmp_prod"); 		//on ajoute
			CardLayout cl = (CardLayout)(globalPanel.getLayout());
		    cl.show(globalPanel, "pmp_prod");						//on affiche
			repaint();		
			
		}
		
	}


	
	
	class CreerRDVActionListener implements ActionListener
	{	
		
		public void actionPerformed(ActionEvent e) {
			panelCreerRDV=new PanelCreerRDV();							//on creer l'ecran creer client
			globalPanel.add(panelCreerRDV,"pcp_rdv");
			CardLayout cl = (CardLayout)(globalPanel.getLayout()); 		//on le stocke dans le panel 
		    cl.show(globalPanel, "pcp_rdv");							//on affiche la bonne couche	
			repaint();
		}		
	}
	
	
	
	class ListerRDVActionListener implements ActionListener
	{	
		
		public void actionPerformed(ActionEvent e) {
			panelListerRDV=new PanelListerRDV();						//on creer l'ecran creer client
			globalPanel.add(panelListerRDV,"pcp_rdv");
			CardLayout cl = (CardLayout)(globalPanel.getLayout()); 		//on le stocke dans le panel 
		    cl.show(globalPanel, "pcp_rdv");							//on affiche la bonne couche	
			repaint();
		}		
	}
}
	

	
	